﻿///////////////////////////////////////////////////////////////////////////////
// File:        RealmList.h
// Author:      671643387@qq.com
// Date:        2016年1月18日 上午11:18:40
// Description:
///////////////////////////////////////////////////////////////////////////////

#ifndef REALMD_REALMLIST_H_
#define REALMD_REALMLIST_H_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <cstdint>
#include <string>
#include <vector>
#include <yxs/util/Time.h>
#include <yxs/thread/Mutex.h>
#include "Common.h"

struct Realm
{
    uint32_t        id;
    std::string     name;
    std::string     address;
    uint8_t         icon;
    eRealmFlags     realmflags;
    uint8_t         timezone;
    float           populationLevel;
};

class RealmList
{
public:
    typedef std::vector<Realm>      RealmArray;
    typedef RealmArray::iterator    iterator;
    typedef RealmArray::size_type   size_type;

public:
    RealmList(void);
    ~RealmList(void);

    void Update(void);
    const RealmArray GetRealms(void)
    {
        __YXS_LOCK_(updateLock_);
        return realms_;
    }

    void Clear(void)
    {
        __YXS_LOCK_(updateLock_);
        realms_.clear();
    }

private:
    ::mki::yxs::util::TIME_t      updateTime_;
    RealmArray  realms_;

    __YXS_MUTEX_ updateLock_;
};


#endif /* REALMD_REALMLIST_H_ */
